package com.vhall.component.entity.pendant.vo;

import com.vhall.component.framework.common.annotation.ParamName;
import lombok.Data;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
import java.util.Objects;

/**
 * @author guoxin.wang
 * @date 2021-10-29 16:50
 */
@Data
public class PendantListStatsReqVO implements Serializable {

    private static final long serialVersionUID = -1883470882016546601L;

    /**
     * 类型，1=推屏挂件 2=固定挂件
     */
    @ParamName("type")
    private Integer type;

    /**
     * 房间id
     */
    @NotBlank(message = "room_id参数不允许为空")
    @ParamName("room_id")
    private String roomId;

    /**
     * 开始时间，格式：yyyy-MM-dd
     */
    @NotBlank(message = "start_time参数不允许为空")
    @ParamName("start_time")
    @Pattern(message = "开始时间格式应该为yyyy-MM-dd", regexp = "^((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))")
    private String startTime;

    /**
     * 结束时间，格式：yyyy-MM-dd
     */
    @NotBlank(message = "end_time参数不允许为空")
    @ParamName("end_time")
    @Pattern(message = "开始时间格式应该为yyyy-MM-dd", regexp = "^((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))")
    private String endTime;

    /**
     * 页码
     */
    @ParamName("page")
    @Min(value = 1, message = "page参数不允许小于1！")
    private Integer page = 1;

    /**
     * 每页数量
     */
    @ParamName("page_size")
    @Min(value = 1, message = "page_size参数不允许小于1！")
    private Integer pageSize = 10;

    public void setDefault() {
        if (Objects.isNull(page)) {
            page = 1;
        }
        if (Objects.isNull(pageSize)) {
            pageSize = 10;
        }
    }

}
